package top.libeilin.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import top.libeilin.demo.pojo.User;
import top.libeilin.demo.service.IUserService;

import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private IUserService userService;

    /**
     * 获取用户信息列表
     * @param model Freemarker参数
     * @return Freemarker用户页面
     */
    @GetMapping("/query")
    public String query(Model model) {
        List<User> users = userService.query();
        model.addAttribute("list", users);
        return "/user";
    }

    /**
     * 调度更新
     * @param model freemarker
     * @param id 用户的id
     * @return 添加用户界面
     */
    @GetMapping("/dispatchUpdate")
    public String dispatchUpdate(Model model, Integer id) {
        // 传了id就是修改操作
        // 否则是插入新的数据操作
        if (id != null) {
            User user = userService.queryById(id);
            model.addAttribute("user", user);
            return "/userUpdate";
        }
        return "/userAdd";
    }

    /**
     * 添加用户界面
     * @return 查询所有用户页面
     */
    @PostMapping("/userUpdate")
    public String userUpdate(User user) {
        // 有id是更新，没有是添加操作
        if (user.getUser_id() != null) {
            // 更新
            userService.updateUser(user);
        } else {
            // 添加
            userService.insertUser(user);
        }
        // 重定向：返回查询页面，查看添加成功
        return "redirect:/user/query";
    }

    /**
     * 根据id删除用户
     * @param id 要删除的用户id
     * @return 跳转到查询页面
     */
    @GetMapping("/deleteUser")
    public String deleteUser(Integer id) {
        userService.deleteUser(id);
        return "redirect:/user/query";
    }

}
